/**
 * 递归函数
 * 函数调用自己，
 * 并且要return退出递归，防止栈的溢出
 */

// 利用递归求1到n的阶乘
function fn(n) {
    if (n === 1){
        return n
    }
    return n * fn(n-1)
}
console.log(fn(10))

// 利用递归函数求兔子序列 1、1、2、3、5、8、13、21
function fb(idx) {
    if (idx === 1 || idx === 2) {
        return 1
    }
    return fb(idx-1) + fb(idx -2)
}

console.log(fb(6)) // 8

// 利用递归查找数据分类
// 输入一个ID号，就把对应的所有商品选出来
var cats = [{
    id: 1,
    name: '家电',
    children: [{
        id: 11,
        name: '冰箱',
    },{
        id: 12,
        name: '电视'
    }]

}, {
    id: 2,
    name: '日用品',
    children: [{
        id: 21,
        name: '扫把',
    },{
        id: 22,
        name: '牙刷'
    }]
}]
function getID(json, id) {
    var o = {};
    for (let item of json) {
        if (item.id == id) { // 当条件满足时，for循环没有跳出，会继续执行第二层循环，最后o就会等于{}空对象
            console.log(item)
            o = item;
            return item;
        } else if (item.children && item.children.length > 0) {
            console.log(111, item.children)
            let v = getID(item.children, id);
            o = v.name ? v : o;
        }
    }
    return o;
}


console.log(getID(cats, 22))